package com.lovo.service.serviceImpl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.lovo.bean.Store;
import com.lovo.dao.StoreMapper;
import com.lovo.service.IStoreService;
import com.lovo.util.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

public class StoreServiceImpl implements IStoreService {
    @Override
    public List<Store> getStoreList() {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        StoreMapper mapper = sqlSession.getMapper(StoreMapper.class);
        List<Store> storeList = mapper.getStoreList();
        System.out.println(storeList);
        SqlSessionUtil.commit();
        return storeList;

    }

    @Override
    public PageInfo<Store> getStoreByPage(int page, int limit) {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        StoreMapper mapper = sqlSession.getMapper(StoreMapper.class);
        PageHelper.startPage(page,limit);
        List<Store> storeList = mapper.getStoreList();
        PageInfo<Store> storePageInfo =new PageInfo<>(storeList);
        SqlSessionUtil.commit();
        return storePageInfo;
    }

    @Override
    public boolean insertOneStore(Store store) {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        StoreMapper mapper = sqlSession.getMapper(StoreMapper.class);
        int i = mapper.insert(store);
        SqlSessionUtil.commit();
        return i>0?true:false;
    }

    @Override
    public boolean updateByPrimaryKeySelective(Store store) {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        StoreMapper mapper = sqlSession.getMapper(StoreMapper.class);
        int i =mapper.updateByPrimaryKeySelective(store);
        SqlSessionUtil.commit();
        return i>0?true:false;
    }

    @Override
    public boolean deleteStore(int storeId) {

        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        StoreMapper mapper = sqlSession.getMapper(StoreMapper.class);
        int i = mapper.deleteByPrimaryKey(storeId);
        SqlSessionUtil.commit();
        return i>0?true:false;
    }

    @Override
    public List<Store> selectByQuery(String queryParam) {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        StoreMapper mapper = sqlSession.getMapper(StoreMapper.class);
        List<Store> stores = mapper.selectByQuery(queryParam);
        SqlSessionUtil.commit();
        return stores;
    }

    @Override
    public PageInfo<Store> selectPageByQuery(String queryParam, int page, int limit) {

        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        StoreMapper mapper = sqlSession.getMapper(StoreMapper.class);
        PageHelper.startPage(page,limit);
        List<Store> stores = mapper.selectByQuery(queryParam);
        PageInfo<Store> storePageInfo =new PageInfo<>(stores);
        SqlSessionUtil.commit();
        return storePageInfo;
    }


    @Override
    public Store selectByPrimaryKey(int storeId) {
        SqlSession sqlSession = SqlSessionUtil.getSqlSession();
        StoreMapper mapper = sqlSession.getMapper(StoreMapper.class);
        Store store = mapper.selectByPrimaryKey(storeId);
        SqlSessionUtil.commit();
        return store;
    }
}
